package edu.cicese.alz;

import org.openstreetmap.gui.jmapviewer.MapHome;
import org.openstreetmap.gui.jmapviewer.MapLocation;
import org.openstreetmap.gui.jmapviewer.MapMarker;
import org.openstreetmap.gui.jmapviewer.MapTrack;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * Created by: Eduardo Quintana Contreras
 * Date: 6/07/12
 * Time: 01:30 PM
 */
public class MapData {
	private int userID;

	private Date date;

	private List<MapMarker> mapMarkers = new ArrayList<>();
	private List<MapTrack> mapTracks = new ArrayList<>();
	private List<MapLocation> mapLocations = new ArrayList<>();
	private MapHome mapHome;

	private boolean showingMarkers, showingLocations, showingTracks, showingLabels;
	private boolean showingGrid, showingZoomControl, showingMarkerControl, showingLocationInfo;
	private boolean showingHome;

	private boolean adjustLocationSize;
	private int locationInfoType, homeRadius, layerType;

	public MapData() {
		this.showingHome = true;
		this.showingGrid = false;
		this.showingMarkers = false;
		this.showingLocations = false;
	}

	public MapData(boolean showingHome, boolean showingMarkers, boolean showingLocations, boolean showingTracks,
	               boolean showingLabels, boolean showingGrid, boolean showingZoomControl, boolean showingMarkerControl,
	               boolean showingLocationInfo, boolean adjustLocationSize,
	               int locationInfoType, int homeRadius, int layerType) {
		this.showingHome = showingHome;
		this.showingMarkers = showingMarkers;
		this.showingLocations = showingLocations;
		this.showingTracks = showingTracks;
		this.showingLabels = showingLabels;
		this.showingGrid = showingGrid;
		this.showingZoomControl = showingZoomControl;
		this.showingMarkerControl = showingMarkerControl;
		this.showingLocationInfo = showingLocationInfo;
		this.adjustLocationSize = adjustLocationSize;
		this.locationInfoType = locationInfoType;
		this.homeRadius = homeRadius;
		this.layerType = layerType;

		mapMarkers = new ArrayList<>();
		mapTracks = new ArrayList<>();
	}

	public MapData(List<MapMarker> mapMarkers, List<MapTrack> mapTracks, boolean showingHome,
	               boolean showingMarkers, boolean showingLocations, boolean showingTracks, boolean showingLabels,
	               boolean showingGrid, boolean showingZoomControl, boolean showingMarkerControl,
	               boolean showingLocationInfo, boolean adjustLocationSize,
	               int locationInfoType, int homeRadius, int layerType) {
		this.mapMarkers = mapMarkers;
		this.mapTracks = mapTracks;
		this.showingHome = showingHome;
		this.showingMarkers = showingMarkers;
		this.showingLocations = showingLocations;
		this.showingTracks = showingTracks;
		this.showingLabels = showingLabels;
		this.showingGrid = showingGrid;
		this.showingZoomControl = showingZoomControl;
		this.showingMarkerControl = showingMarkerControl;
		this.showingLocationInfo = showingLocationInfo;
		this.adjustLocationSize = adjustLocationSize;
		this.locationInfoType = locationInfoType;
		this.homeRadius = homeRadius;
		this.layerType = layerType;
	}

	public MapData(List<MapMarker> mapMarkers, List<MapTrack> mapTracks, List<MapLocation> mapLocations) {
		this.mapMarkers = mapMarkers;
		this.mapTracks = mapTracks;
		this.mapLocations = mapLocations;
	}

	public void setMapMarkers(List<MapMarker> mapMarkers) {
		this.mapMarkers = mapMarkers;
	}

	public List<MapMarker> getMapMarkers() {
		return mapMarkers;
	}

	public void setMapTracks(List<MapTrack> mapTracks) {
		this.mapTracks = mapTracks;
	}

	public List<MapTrack> getMapTracks() {
		return mapTracks;
	}

	public void setMapLocations(List<MapLocation> mapLocations) {
		this.mapLocations = mapLocations;
	}

	public List<MapLocation> getMapLocations() {
		return mapLocations;
	}

	public void setUserID(int userID) {
		this.userID = userID;
	}

	public int getUserID() {
		return userID;
	}

	public void setDate(Date date) {
		this.date = date;
	}

	public Date getDate() {
		return date;
	}

	public boolean isShowingMarkers() {
		return showingMarkers;
	}

	public void setShowingMarkers(boolean showingMarkers) {
		this.showingMarkers = showingMarkers;
	}

	public boolean isShowingLocations() {
		return showingLocations;
	}

	public void setShowingLocations(boolean showingLocations) {
		this.showingLocations = showingLocations;
	}

	public boolean isShowingTracks() {
		return showingTracks;
	}

	public void setShowingTracks(boolean showingTracks) {
		this.showingTracks = showingTracks;
	}

	public boolean isShowingLabels() {
		return showingLabels;
	}

	public void setShowingLabels(boolean showingLabels) {
		this.showingLabels = showingLabels;
	}

	public boolean isShowingGrid() {
		return showingGrid;
	}

	public void setShowingGrid(boolean showingGrid) {
		this.showingGrid = showingGrid;
	}

	public boolean isShowingZoomControl() {
		return showingZoomControl;
	}

	public void setShowingZoomControl(boolean showingZoomControl) {
		this.showingZoomControl = showingZoomControl;
	}

	public boolean isShowingMarkerControl() {
		return showingMarkerControl;
	}

	public void setShowingMarkerControl(boolean showingMarkerControl) {
		this.showingMarkerControl = showingMarkerControl;
	}

	public boolean isShowingLocationInfo() {
		return showingLocationInfo;
	}

	public void setShowingLocationInfo(boolean showingLocationInfo) {
		this.showingLocationInfo = showingLocationInfo;
	}

	public boolean isAdjustLocationSize() {
		return adjustLocationSize;
	}

	public void setAdjustLocationSize(boolean adjustLocationSize) {
		this.adjustLocationSize = adjustLocationSize;
	}

	public int getLocationInfoType() {
		return locationInfoType;
	}

	public void setLocationInfoType(int locationInfoType) {
		this.locationInfoType = locationInfoType;
	}

	public int getHomeRadius() {
		return homeRadius;
	}

	public void setHomeRadius(int homeRadius) {
		this.homeRadius = homeRadius;
	}

	public int getLayerType() {
		return layerType;
	}

	public void setLayerType(int layerType) {
		this.layerType = layerType;
	}

	public MapHome getMapHome() {
		return mapHome;
	}

	public void setMapHome(MapHome mapHome) {
		this.mapHome = mapHome;
	}

	public boolean isShowingHome() {
		return showingHome;
	}

	public void setShowingHome(boolean showingHome) {
		this.showingHome = showingHome;
	}
}